import java.util.ArrayList;
import java.util.List;
import java.util.Random;

//Cards类，代表桌面上的牌
public class Cards {
    private static final String[] suits={"♥","♠","♦","♣"};

    //按序生成牌堆方法
    public List<Card> loadCard() {
        //生成牌堆
        List<Card> cardList = new ArrayList<>();
        //四种花色
        for(int i=0;i<4;i++){
            //13张牌(11,12,13以数字代替,且不含大小王)
            for(int j=1;j<=13;j++){
                //按序添加卡牌
                cardList.add(new Card(j,suits[i]));
            }
        }
        return cardList;
    }

    //洗牌方法
    public void shuffle(List<Card> cardList){
        Random random=new Random();
        for(int i=cardList.size()-1;i>0;i--){
            //调用random的nextInt方法生成随机数
            int randIndex= random.nextInt(i);
            swapCard(cardList,i,randIndex);
        }
    }

    //换牌方法，供shuffle洗牌方法使用
    private void swapCard(List<Card> cardList,int i,int j){
        Card tmp=cardList.get(i);
        cardList.set(i,cardList.get(j));
        cardList.set(j,tmp);
    }

    //抓牌方法
    public void drawCard(List<Card> cardList){
        //生成每个人手上的牌堆
        List<Card> hand1=new ArrayList<>();
        List<Card> hand2=new ArrayList<>();
        List<Card> hand3=new ArrayList<>();
        //生成三个人手上的牌堆序列
        List<List<Card>> hands=new ArrayList<>();
        hands.add(hand1);
        hands.add(hand2);
        hands.add(hand3);

        for(int i=0;i<5;i++){
            //总共抓5轮
            for(int j=0;j<3;j++){
                //每轮三人抓牌

                //每次每人从桌面牌堆上的第一张摸牌，所以remove后参数为0
                Card card=cardList.remove(0);
                //currentHand表示当前摸牌人
                List<Card>currentHand=hands.get(j);
                currentHand.add(card);
            }
        }
        //展示每个人摸到的牌
        for(int i=0;i< hands.size();i++) {
            System.out.println("第"+(i+1)+"个人的牌为" + hands.get(i));
        }
    }
}
